package com.uw.uwrpc.core.api;


import com.uw.uwrpc.core.meta.InstanceMeta;
import com.uw.uwrpc.core.meta.ServiceMeta;
import com.uw.uwrpc.core.registry.ChangedListener;

import java.util.ArrayList;
import java.util.List;

/**
 * 注册中心
 */
public interface RegistryCenter {
    /**
     * 启动方法
     */
    default void start() {
    }


    /**
     * 关闭方法
     */
    default void stop() {
    }


    /**
     * 注册服务提供者
     */
    default void register(ServiceMeta serviceMeta, InstanceMeta instanceMeta) {
    }


    /**
     * 下线服务提供者
     */
    default void unregister(ServiceMeta serviceMeta, InstanceMeta instanceMeta) {
    }


    /**
     * 获取指定服务的所有服务提供者。
     */
    default List<InstanceMeta> fetchAll(ServiceMeta serviceMeta) {
        return new ArrayList<>();
    }


    /**
     * 订阅监听指定服务。
     */
    default void subscribe(ServiceMeta serviceMeta, ChangedListener listener) {
    }

}
